package com.demo.java.OD501_550.OD550;

import java.util.Scanner;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【最长子字符串的长度II(C卷-200分)】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/146531484
 */
public class OdMain {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String input_str = in.nextLine();  // 读取输入字符串

        // 模拟环形字符串，拼接字符串自身
        System.out.println(findTheLongestSubstring(input_str + input_str));
    }

    // 寻找符合条件的最长子串
    public static int findTheLongestSubstring(String ss) {
        char[] s = ss.toCharArray();  // 将字符串转换为字符数组
        int[][] dp = new int[8][s.length + 1];  // dp数组记录每个状态的最早位置
        int[][] index = new int[8][2];  // index数组用于记录每种状态的出现次数
        for (int i = 0; i < 8; i++) {
            index[i][0] = 0;  // 初始化状态的最早位置为0
            index[i][1] = 0;  // 初始化状态的出现次数为0
        }
        dp[0][index[0][0]] = -1;  // 初始状态，最早位置为-1
        index[0][1] += 1;  // 初始状态出现一次
        int pattern = 0;  // 当前字符状态
        int res = 0;  // 记录最长子串长度

        // 遍历字符串中的每个字符
        for (int i = 0; i < s.length; i++) {
            // 根据当前字符更新状态
            if (s[i] == 'l') {
                pattern ^= (1 << 0);  // 更新l的状态
            } else if (s[i] == 'o') {
                pattern ^= (1 << 1);  // 更新o的状态
            } else if (s[i] == 'x') {
                pattern ^= (1 << 2);  // 更新x的状态
            }

            dp[pattern][index[pattern][1]] = i;  // 更新状态的出现位置
            index[pattern][1] += 1;  // 增加当前状态的出现次数

            // 确保当前子串长度不超过原始字符串长度的一半
            while (true) {
                if (dp[pattern][index[pattern][1] - 1] - dp[pattern][index[pattern][0]] <= s.length / 2) {
                    break;
                }
                index[pattern][0] += 1;  // 移动最早的位置
            }

            // 更新最大长度
            if (res < dp[pattern][index[pattern][1] - 1] - dp[pattern][index[pattern][0]]) {
                res = dp[pattern][index[pattern][1] - 1] - dp[pattern][index[pattern][0]];
            }
        }

        return res;  // 返回最大子串长度
    }
}